//
// Created by 86155 on 2025/6/3.
//

#ifndef LLVM_FEMCEXPR_H
#define LLVM_FEMCEXPR_H

#include "llvm/MC/MCExpr.h"
namespace llvm{
class FeMCExpr : public MCTargetExpr{
public:
  enum Kind { NONE, BIAO };
  FeMCExpr(Kind K, const MCExpr *Expr, unsigned short value) : Kd(K), Expr(Expr),value(value) {}

  void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;
  bool evaluateAsRelocatableImpl(MCValue &Res, const MCAssembler *Asm,
                                 const MCFixup *Fixup) const override {
    return false;
  };
  void visitUsedExpr(MCStreamer &Streamer) const override {}
  MCFragment *findAssociatedFragment() const override { return nullptr; }

  void fixELFSymbolsInTLSFixups(MCAssembler &) const override {}

private:
  const Kind Kd;
  const MCExpr *Expr;
  const unsigned short value;
};
}


#endif // LLVM_FEMCEXPR_H
